//
//  BLMCollectionViewController.m
//  IOSDome
//
//  Created by 刘波 on 2019/4/29.
//  Copyright © 2019 clobe. All rights reserved.
//

#import "BLMCollectionViewController.h"

@interface BLMCollectionViewController ()

@property (nonatomic,strong)NSMutableArray *mArr;

@end

@implementation BLMCollectionViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.view.backgroundColor = [UIColor whiteColor];
    
    //集合类
    [self setNSArray];             //不可变数组
    [self setNSMutableArray];      //可变数组
    [self setNSDictionary];        //不可变字典
    [self setNSMutableDictionary]; //可变字典
    [self setNSSet];               // 不可变集合
    [self setNSMuTableSet];        //可变集合
    
    
}



/**
 不可变数组
 */
-(void)setNSArray{
    //创建一个不可变数组
    NSArray *arr = [NSArray arrayWithObjects:@"0",@"1",@"2",@"3",@"4", nil];
    NSLog(@"下标为1的元素：%@",arr[1]); //输出：1
    NSLog(@"%ld",arr.count); // 输出：5
    NSLog(@"%@",[arr objectAtIndex:3]); //输出：3
    //根据原属获取下标
    NSLog(@"%ld",[arr indexOfObject:@"4"]);//输出：4
    //数组中是否包含了某个元素
    if([arr containsObject:@"5"]){
        NSLog(@"包含此元素");
    }else{
        NSLog(@"不包含");
    }
}


/**
 可变数组
 */
-(void)setNSMutableArray{
    //初始化一个可以存10个元素的可变数组
    NSMutableArray *mArr = [NSMutableArray arrayWithCapacity:10];
    NSArray *arr = [NSArray arrayWithObjects:@"0",@"1",@"2", nil];
    //不可变集合转为可变集合
    [mArr addObjectsFromArray:arr]; //marr:0 1 2
    //可变集合转不可变集合
    NSArray *arr1 = [mArr mutableCopy];
    //在数组末尾添加一个元素
    [mArr addObject:@"3"]; //mrr 0 1 2 3
    //在数组下标为2的位置添加一个元素 注意：下标大于当前数组元素个数，系统会崩溃
    [mArr setObject:@"4" atIndexedSubscript:2];//marr:0 1 4 3
    //移除下标为3的元素
    [mArr removeObjectAtIndex:3]; //marr:0 1 4
    //从数组中移除指定集合所有元素：差集
    [mArr removeObjectsInArray:@[@"0",@"1",@"5"]]; //marr 4
    //移除数组所有元素
    [mArr removeAllObjects];  //marr:
    NSLog(@"");
}


/**
 不可变字典
 */
-(void)setNSDictionary{
    NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:@"v1",@"k1",@"v2",@"k2", nil];
    NSDictionary *dic2 = [NSDictionary dictionaryWithObject:@[@"v1",@"v2"] forKey:@[@"k1",@"k2"]];
    
    NSDictionary *dic3 = @{@"k1":@"v2",@"k2":@"v2",@"k3":@"v3"};
    //字典长度
    [dic3 count]; // 3
    //通过key查找value
    [dic3 objectForKey:@"k2"]; // v2
    //获取所有key
    [dic3 allKeys]; //k1 k2 k3
    //获取所有value
    [dic3 allValues]; //v1 v2 v3
}



/**
 　可变字典
 */
-(void)setNSMutableDictionary{
    //初始化一个可以存10个元素的可变字典
    NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithCapacity:10];
    //添加数据
    [dic setObject:@"v1" forKey:@"k1"];
    [dic setObject:@"v2" forKey:@"k2"];
    [dic setObject:@"v3" forKey:@"k3"];
    //添加数据 value可以为你了nil
    [dic setValue:nil forKey:@"k4"];
    //添加已有key的元素，替换value
    [dic setValue:@"v4" forKey:@"k3"];
    //删除指定元素
    [dic removeObjectForKey:@"k3"];
    //清除所有元素
    [dic removeAllObjects];
    
    NSLog(@"不可变字典");
}



/**
 不可变集合
 */
-(void)setNSSet{
    NSSet *set = [NSSet setWithObjects:@"1",@"2",@"3",@"4", nil];
    //集合转数组
    NSArray *array =[set allObjects];
    //数组转集合
    NSSet *newSet = [NSSet setWithArray:array];
    //集合的个数
    [set count]; //4;
    
    //判断集合是否h包含指定字符串
    [set containsObject:@"5"];
    //判断指定集合是否和集合相等
    if([set isEqualToSet:newSet]){
        NSLog(@"set 等于 newSet");
    }
    
    NSLog(@"不可变集合");
    
}


/**
 可变集合
 */
-(void)setNSMuTableSet{
    NSMutableSet *set = [NSMutableSet setWithObjects:@"3",@"4",@"5",@"6", nil];
    NSMutableSet *set1 = [NSMutableSet setWithObjects:@"5",@"6",@"7",@"8", nil];
    //交集 两个集合相同的元素
    [set intersectsSet:set1]; //3 6 4 5
    //并集 集合中添加指定集合所有元素
    [set unionSet:set1]; //3 8 6 4 7 5
    //差集 从集合中移除指定集合的所有元素
    [set minusSet:set1]; // 3 4
    NSLog(@"可变集合");
    
    //删除指定元素
    [set1 removeObject:@"5"];
    //删除所有元素
    [set1 removeAllObjects];
    
     NSLog(@"可变集合");
}

@end
